package ru.st.selenium;

import org.testng.annotations.*;

import static org.junit.Assert.*;
import ru.st.selenium.model.EditFieldTypesObject;
import ru.st.selenium.model.TypesTask;
import ru.st.selenium.pages.TestBase;

public class CreateTypeTasks extends TestBase {

	// BeforeMethod выполняется ПЕРЕД каждым тестовым методом в этом классе.
	@BeforeMethod
	public void MayBeLogout() {
		if (app.getUserHelper().isNotLoggedIn()) {
			return;
		}
		app.getUserHelper().logout();
	}

	// Add Create Types Task
	@Test
	public void AddCreateTypesTask() throws Exception {
		// Создаем набор тестовых данных (объект предметной области)
		TypesTask typestask = new TypesTask()
				.setTypesTaskName("SObject Типы задач" + " " + randomString(10));
		
		EditFieldTypesObject editfieldtypestask = new EditFieldTypesObject()
				// 1. СТРОКА
				.setNameFieldTypesObject("IСтрока")
				.setIdentifierFieldTypesObject("ISTROKA")
				// 2. ТЕКСТ
				.setNameFieldTypesObject1("IТекст")
				.setIdentifierFieldTypesObject1("ITEXT")
				// 3. ЦЕЛОЕ
				.setNameFieldTypesObject2("IЦелое")
				.setIdentifierFieldTypesObject2("ICHELOE")
				// 4. ВЕЩЕСТВЕННОЕ
				.setNameFieldTypesObject3("IВещественное")
				.setIdentifierFieldTypesObject3("IVESHESTVENNOE")
				// 5. ДАТА
				.setNameFieldTypesObject4("IДата")
				.setIdentifierFieldTypesObject4("IDATA")
				// 6. ФАЙЛ
				.setNameFieldTypesObject5("IФайл")
				.setIdentifierFieldTypesObject5("IFILES")
				// 7. ССЫЛКА НА СПРАВОЧНИК
				.setNameFieldTypesObject6("IСсылка на спр-к")
				.setIdentifierFieldTypesObject6("ISSILKA")
				// 8. МНОЖЕСТВЕННАЯ ССЫЛКА
				.setNameFieldTypesObject7("IМножественная ссылка")
				.setIdentifierFieldTypesObject7("IMNOJS")
				// 9. ЛОГИЧЕСКОЕ
				.setNameFieldTypesObject8("IЛогический")
				.setIdentifierFieldTypesObject8("IBOOLEAN")
				// 10. БИБЛИОТЕКА
				.setNameFieldTypesObject9("IСсылка на библиотеку")
				.setIdentifierFieldTypesObject9("LIB")
				// 11. ССЫЛКА НА ЗАДАЧУ
				.setNameFieldTypesObject10("ICсылка на задачу")
				.setIdentifierFieldTypesObject10("ITASK")
				// 12. НУМЕРАТОР
				.setNameFieldTypesObject11("IНумератор")
				.setIdentifierFieldTypesObject11("INUM")
				// 13. ССЫЛКА НА ОБЪЕКТ
				.setNameFieldTypesObject12("IСсылка на объект")
				.setIdentifierFieldTypesObject12("IOBJECT")
				// 14. ТАБЛИЦА
				.setNameFieldTypesObject13("IТаблица")
				.setIdentifierFieldTypesObject13("ITABLES");

		// далее выше подготовленные тестовые данные используем
		app.getNavigationHelper().maximizeWindow();
		app.getUserHelper().loginAs(ADMIN);
		assertTrue(app.getUserHelper().isLoggedIn());
		app.getTypesObjectHelper().createTypesTask(typestask); // Добавление объекта - Типы задач
		app.getEditFieldsTypesObjectHelper().addFieldsTypesTaskHelper(
				editfieldtypestask); // Добавление всех типов полей в объект - Типы задач
		app.getTypesObjectHelper().verifyCreateObject(); // Проверка отображения записи в гриде - Типы задач
		app.getUserHelper().logout();
		assertTrue(app.getUserHelper().isNotLoggedIn());
	}
}
